package cn.jsj.invite.service;

import cn.jsj.invite.pojo.InvitationInfo;
import cn.jsj.invite.pojo.SchoolAdminEnt;
import cn.jsj.invite.pojo.StudentEnt;
import cn.jsj.invite.pojo.SuperAdminInfo;
import com.github.pagehelper.PageInfo;

import java.util.List;


public interface SuperAdminService {

    /**
     * 超管登录
     *
     * @param loginName 登录名
     * @param password  登录密码
     * @return 超管信息对象
     */
    SuperAdminInfo login(String loginName, String password);

    /**
     * 超管根据学校ID分页查询
     *
     * @param schoolId 学校ID
     * @param page     第几页
     * @return 学生信息集合
     */
    PageInfo<StudentEnt> pageStudentsInfo(Integer schoolId, Integer page);

    /**
     * 添加一个学校管理员信息
     *
     * @param name     学校管理员登录名
     * @param password 学校管理员登录密码
     * @param schoolId 学校ID
     * @param phone    手机号
     * @return 成功1。否则0
     */
    Integer addOneSchoolAdmin(String name, String password, Integer schoolId, String phone);

    /**
     * 超管修改密码 根据id以及旧密码
     *
     * @param oldPassword 旧密码
     * @param newPassword 新密码
     * @param id          超管ID
     * @return 1：成功 0：失败
     */
    Integer updatePasswordById(String oldPassword, String newPassword, Integer id);

    /**
     * 超管根据学校管理员ID和学校ID 删除学校管理员
     *
     * @param id       学校管理员ID
     * @param schoolId 学校ID
     * @return 1：成功  0：失败
     */
    Integer deleteSchoolAdminByAdminId(Integer id, Integer schoolId);

    /**
     * 查看所有的帖子
     *
     * @param schoolId 学校ID
     * @param pageNum  页号
     * @return 帖子信息集合
     */
    PageInfo<InvitationInfo> listAllPageInfoWithSchoolId(Integer schoolId, Integer pageNum);

    /**
     * 超管查看所的帖子
     *
     * @param superAdminId 超管ID
     * @return 帖子信息
     */
    List<InvitationInfo> listAllPageInfo(Integer superAdminId);

    /**
     * @param superId 超管ID
     * @return 学生信息集合
     */
    List<StudentEnt> listAllStudent(Integer superId);

    /**
     * 查询所有学校管理员
     * @param superAdminId 超管ID
     * @return 学校管理员信息
     */
    List<SchoolAdminEnt> listAllSchoolAdmin(Integer superAdminId);

    /**
     * 超管修改学校管理员密码
     * @param schoolAdminId 学校管理员
     * @param newPassword 新密码
     * @return 成功1，否则0或null
     */
    Integer updateSchoolAdminPassword(Integer schoolAdminId, String newPassword);
}
